/*
 * ASerialCommand.h
 *
 * @author Bematech S.A.
 */

#ifndef __BILBAO_PROTOCOL_SERIAL_SERIAL_COMMAND_ABSTRACT_CLASS_H__
#define __BILBAO_PROTOCOL_SERIAL_SERIAL_COMMAND_ABSTRACT_CLASS_H__

#include "bilbao/protocol/ICommand.h"

namespace bilbao
{
	namespace protocol
	{
		namespace serial
		{
			class ASerialCommand : public ICommand
			{
			public:
				enum E_SERIAL_COMMAND_ID
				{
					ASSOCIAR_ASSINATURA,
					ATIVAR_SAT,
					ATUALIZAR_SOFTWARE_SAT,
					BLOQUEAR_SAT,
					CANCELAR_ULTIMA_VENDA,
					COMUNICAR_CERTIFICADO_ICPBRASIL,
					CONFIGURAR_INTERFACE_DE_REDE,
					CONSULTAR_NUMERO_SESSAO,
					CONSULTAR_SAT,
					CONSULTAR_STATUS_OPERACIONAL,
					DESBLOQUEAR_SAT,
					ENVIAR_DADOS_VENDA,
					EXTRAIR_LOGS,
					TESTE_FIM_A_FIM,
					TROCAR_CODIGO_ATIVACAO
				};

				/*
				 * Destrutor
				 */
				virtual ~ASerialCommand( void );

				/*
				 * Get e Set id
				 */
				inline E_SERIAL_COMMAND_ID Id( void ) { return _id; }

				inline void Id( const E_SERIAL_COMMAND_ID& id ) { _id = id; }

				/*
				 * Get e Set activationCode
				 */
				inline String ActivationCode( void ) { return _activationCode; }

				inline void ActivationCode( const String& activationCode ) { _activationCode = activationCode; }

			protected:
				/*
				 * Construtor padrão
				 */
				ASerialCommand( void );

				/*
				 * Construtor
				 */
				ASerialCommand( const E_SERIAL_COMMAND_ID&, const String& = "" );

				/*
				 *
				 */
				String _activationCode;

				/*
				 *
				 */
				E_SERIAL_COMMAND_ID _id;

			}; // class ASerialCommand
		}  // namespace serial
	} // namespace protocol
} // namespace bilbao


#endif // __BILBAO_PROTOCOL_SERIAL_SERIAL_COMMAND_ABSTRACT_CLASS_H__
